<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
    <title>Reference</title>
    <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>

<div id="container">

<div id="product">
	<div id="product_logo"></div>
	<div id="product_name"><big><b></b></big></div>
	<div id="product_description"></div>
</div> <!-- id="product" -->


<div id="main">


<!-- Menu -->

<div id="navigation">
<br/>
<h1>Duplex</h1>

<ul>
  <li><a href="../index.html">Index</a></li>
</ul>

<h2>Contents</h2>
<ul>
<li><a href="#Functions">Functions</a></li>
<li><a href="#Tables">Tables</a></li>
<li><a href="#Fields">Fields</a></li>
</ul>


<h2>Modules</h2>
<ul class="$(kind=='Topics' and '' or 'nowrap'">
  <li><a href="../modules/Duplex.Application.html">Duplex.Application</a></li>
  <li><a href="../modules/Duplex.Applications.Effect.html">Duplex.Applications.Effect</a></li>
  <li><a href="../modules/Duplex.Applications.GridPie.html">Duplex.Applications.GridPie</a></li>
  <li><a href="../modules/Duplex.Applications.Hydra.html">Duplex.Applications.Hydra</a></li>
  <li><a href="../modules/Duplex.Applications.Instrument.html">Duplex.Applications.Instrument</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.GridLayout.html">Duplex.Applications.Keyboard.GridLayout</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.Layouts.HarmonicLayout.html">Duplex.Applications.Keyboard.Layouts.HarmonicLayout</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.Layouts.IsomorphicLayout.html">Duplex.Applications.Keyboard.Layouts.IsomorphicLayout</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.Layouts.PianoLayout.html">Duplex.Applications.Keyboard.Layouts.PianoLayout</a></li>
  <li><a href="../modules/Duplex.Applications.Keyboard.html">Duplex.Applications.Keyboard</a></li>
  <li><a href="../modules/Duplex.Applications.Matrix.html">Duplex.Applications.Matrix</a></li>
  <li><a href="../modules/Duplex.Applications.Metronome.html">Duplex.Applications.Metronome</a></li>
  <li><a href="../modules/Duplex.Applications.MidiActions.Bindings.html">Duplex.Applications.MidiActions.Bindings</a></li>
  <li><strong>Duplex.Applications.MidiActions</strong></li>
  <li><a href="../modules/Duplex.Applications.Mixer.html">Duplex.Applications.Mixer</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.Mlrx_group.html">Duplex.Applications.Mlrx.Mlrx_group</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.Mlrx_note.html">Duplex.Applications.Mlrx.Mlrx_note</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.Mlrx_pos.html">Duplex.Applications.Mlrx.Mlrx_pos</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.Mlrx_track.html">Duplex.Applications.Mlrx.Mlrx_track</a></li>
  <li><a href="../modules/Duplex.Applications.Mlrx.html">Duplex.Applications.Mlrx</a></li>
  <li><a href="../modules/Duplex.Applications.Navigator.html">Duplex.Applications.Navigator</a></li>
  <li><a href="../modules/Duplex.Applications.NotesOnWheels.html">Duplex.Applications.NotesOnWheels</a></li>
  <li><a href="../modules/Duplex.Applications.PatternCursor.html">Duplex.Applications.PatternCursor</a></li>
  <li><a href="../modules/Duplex.Applications.PatternSequence.html">Duplex.Applications.PatternSequence</a></li>
  <li><a href="../modules/Duplex.Applications.Recorder.html">Duplex.Applications.Recorder</a></li>
  <li><a href="../modules/Duplex.Applications.Repeater.html">Duplex.Applications.Repeater</a></li>
  <li><a href="../modules/Duplex.Applications.Rotate.html">Duplex.Applications.Rotate</a></li>
  <li><a href="../modules/Duplex.Applications.StepSequencer.html">Duplex.Applications.StepSequencer</a></li>
  <li><a href="../modules/Duplex.Applications.SwitchConfiguration.html">Duplex.Applications.SwitchConfiguration</a></li>
  <li><a href="../modules/Duplex.Applications.TestPad.html">Duplex.Applications.TestPad</a></li>
  <li><a href="../modules/Duplex.Applications.TrackSelector.html">Duplex.Applications.TrackSelector</a></li>
  <li><a href="../modules/Duplex.Applications.Transport.html">Duplex.Applications.Transport</a></li>
  <li><a href="../modules/Duplex.Applications.UIButtonTest.html">Duplex.Applications.UIButtonTest</a></li>
  <li><a href="../modules/Duplex.Applications.XYPad.html">Duplex.Applications.XYPad</a></li>
  <li><a href="../modules/Duplex.Automation.html">Duplex.Automation</a></li>
  <li><a href="../modules/Duplex.Browser.html">Duplex.Browser</a></li>
  <li><a href="../modules/Duplex.BrowserProcess.html">Duplex.BrowserProcess</a></li>
  <li><a href="../modules/Duplex.Canvas.html">Duplex.Canvas</a></li>
  <li><a href="../modules/Duplex.CanvasPoint.html">Duplex.CanvasPoint</a></li>
  <li><a href="../modules/Duplex.ControlMap.html">Duplex.ControlMap</a></li>
  <li><a href="../modules/Duplex.Device.html">Duplex.Device</a></li>
  <li><a href="../modules/Duplex.Display.html">Duplex.Display</a></li>
  <li><a href="../modules/Duplex.Globals.html">Duplex.Globals</a></li>
  <li><a href="../modules/Duplex.Message.html">Duplex.Message</a></li>
  <li><a href="../modules/Duplex.MessageStream.html">Duplex.MessageStream</a></li>
  <li><a href="../modules/Duplex.MidiDevice.html">Duplex.MidiDevice</a></li>
  <li><a href="../modules/Duplex.OscClient.html">Duplex.OscClient</a></li>
  <li><a href="../modules/Duplex.OscDevice.html">Duplex.OscDevice</a></li>
  <li><a href="../modules/Duplex.OscVoiceMgr.html">Duplex.OscVoiceMgr</a></li>
  <li><a href="../modules/Duplex.Preferences.html">Duplex.Preferences</a></li>
  <li><a href="../modules/Duplex.ProcessSlicer.html">Duplex.ProcessSlicer</a></li>
  <li><a href="../modules/Duplex.RoamingDSP.html">Duplex.RoamingDSP</a></li>
  <li><a href="../modules/Duplex.Scheduler.html">Duplex.Scheduler</a></li>
  <li><a href="../modules/Duplex.StateController.html">Duplex.StateController</a></li>
  <li><a href="../modules/Duplex.UIButton.html">Duplex.UIButton</a></li>
  <li><a href="../modules/Duplex.UIButtonStrip.html">Duplex.UIButtonStrip</a></li>
  <li><a href="../modules/Duplex.UIComponent.html">Duplex.UIComponent</a></li>
  <li><a href="../modules/Duplex.UIKey.html">Duplex.UIKey</a></li>
  <li><a href="../modules/Duplex.UIKeyPressure.html">Duplex.UIKeyPressure</a></li>
  <li><a href="../modules/Duplex.UILabel.html">Duplex.UILabel</a></li>
  <li><a href="../modules/Duplex.UIPad.html">Duplex.UIPad</a></li>
  <li><a href="../modules/Duplex.UIPitchBend.html">Duplex.UIPitchBend</a></li>
  <li><a href="../modules/Duplex.UISlider.html">Duplex.UISlider</a></li>
  <li><a href="../modules/Duplex.UISpinner.html">Duplex.UISpinner</a></li>
  <li><a href="../modules/Duplex.WidgetHooks.html">Duplex.WidgetHooks</a></li>
  <li><a href="../modules/Duplex.WidgetKeyboard.html">Duplex.WidgetKeyboard</a></li>
  <li><a href="../modules/Duplex.html">Duplex</a></li>
  <li><a href="../modules/main.html">main</a></li>
</ul>

</div>

<div id="content">

<h1>Module <code>Duplex.Applications.MidiActions</code></h1>
<p>MidiActions will expose most of the standard Renoise mappings to Duplex.</p>
<p>
Inheritance: <a href="../modules/Duplex.Application.html#">Duplex.Application</a> > Duplex.Application.MidiActions </p>

<p>MidiActions will expose standard Renoise mappings as fully bi-directional mappings, with customizable scaling (exponential, logarithmic, linear) and range. </p>

<p>By parsing the GlobalMidiActions file, it literally provides access to hundreds of features inside Renoise, such as BPM, LPB, and even UI view presets. You will have to map each feature manually, but only once - once mapped, the target will remain accessible. </p>

<p>See also: <a href="../modules/Duplex.Applications.MidiActions.Bindings.html#">Duplex.Applications.MidiActions.Bindings</a></p>


<h2><a href="#Functions">Functions</a></h2>
<table class="function_list">
	<tr>
	<td class="name" nowrap><a href="#__init">__init (VarArg)</a></td>
	<td class="summary">Constructor method</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#start_app">start_app ()</a></td>
	<td class="summary">inherited from Application</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#stop_app">stop_app ()</a></td>
	<td class="summary">inherited from Application</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_clear_routing">_clear_routing ()</a></td>
	<td class="summary">Reset all properties that deal with the current mapping</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_remove_notifier">_remove_notifier ()</a></td>
	<td class="summary">Detach an existing notifier, if it exists</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_update_control">_update_control (skip_transmit)</a></td>
	<td class="summary">Bi-directional update (controller/Renoise)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_scale_value">_scale_value (val, method)</a></td>
	<td class="summary">Scale value log/exponentially</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_has_value">_has_value ()</a></td>
	<td class="summary">Determine if we are able to retrieve value for the current assignment</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_has_observable">_has_observable ()</a></td>
	<td class="summary">Determine ability to retrieve an Observable for the current assignment</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_get_value">_get_value ()</a></td>
	<td class="summary">Retrieve value for the current assignment</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_get_observable">_get_observable ()</a></td>
	<td class="summary">Retrieve Observable for the current assignment</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_transmit">_transmit (val)</a></td>
	<td class="summary">Transmit message
 when routed to MIDI, we generate an emulated 'TriggerMessage'</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_get_min_max">_get_min_max (assist)</a></td>
	<td class="summary">Get the min/max values for a parameter</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_retrieve_assist_by_name">_retrieve_assist_by_name (str_name)</a></td>
	<td class="summary">Locate a specific item in our "assist" table from it's name,
 with built-in wildcard support (entries that contain an asterisk)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_update_option_panel">_update_option_panel ()</a></td>
	<td class="summary">Update min/max options, called after routing has been established</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_reset_min_max_options">_reset_min_max_options ()</a></td>
	<td class="summary">Disable min/max options</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_validate_range">_validate_range ()</a></td>
	<td class="summary">Validate &amp; set the current option/user-specified min/max
 note that we allow inverted min/max, but not values outside this range</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_establish_routing">_establish_routing (first_run)</a></td>
	<td class="summary">Look up the mapping and gather as much information as possible</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#on_idle">on_idle ()</a></td>
	<td class="summary">inherited from Application</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_build_options">_build_options ()</a></td>
	<td class="summary">Override the application method (update the options once ready)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#_build_app">_build_app ()</a></td>
	<td class="summary">inherited from Application</td>
	</tr>
</table>
<h2><a href="#Tables">Tables</a></h2>
<table class="function_list">
	<tr>
	<td class="name" nowrap><a href="#self._controls">self._controls</a></td>
	<td class="summary">List of UIComponents</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._assist">self._assist</a></td>
	<td class="summary">(table), contains extra information about mapping
 (see MidiActions.assist_table)</td>
	</tr>
</table>
<h2><a href="#Fields">Fields</a></h2>
<table class="function_list">
	<tr>
	<td class="name" nowrap><a href="#self._active_map_index">self._active_map_index</a></td>
	<td class="summary">(int), between 1 - #<em>midi</em>mappings, or nil if no action</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._is_switch">self._is_switch</a></td>
	<td class="summary">(bool), interpreted from the MIDI action</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._is_trigger">self._is_trigger</a></td>
	<td class="summary">(bool), interpreted from the MIDI action</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._is_toggle">self._is_toggle</a></td>
	<td class="summary">(bool), control the visual state of a button</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._value">self._value</a></td>
	<td class="summary">(number/bool/nil), represents the current value
 (literal value, "64" for 64 BPM, "1.2" for 1.2 db, etc.)</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._skip_notifier">self._skip_notifier</a></td>
	<td class="summary">(bool), set when updating a parameter which is being observed</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._revert_requested">self._revert_requested</a></td>
	<td class="summary">(bool), set when options should be reset</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#self._user_min">self._user_min</a></td>
	<td class="summary">(number), last "good" user-specified value</td>
	</tr>
</table>

<br/>
<br/>


    <h2><a name="Functions"></a>Functions</h2>
    <dl class="function">
    <dt>
    <a name = "__init"></a>
    <strong>__init (VarArg)</strong>
    </dt>
    <dd>
    Constructor method


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">VarArg</span>
        )
        </li>
    </ul>



    <h3>See also:</h3>
    <ul>
         <a href="../modules/Duplex.Application.html#">Duplex.Application</a>
    </ul>


</dd>
    <dt>
    <a name = "start_app"></a>
    <strong>start_app ()</strong>
    </dt>
    <dd>
    inherited from Application



    <h3>Returns:</h3>
    <ol>

        bool or nil
    </ol>


    <h3>See also:</h3>
    <ul>
         <a href="../modules/Duplex.Application.html#start_app">Duplex.Application.start_app</a>
    </ul>


</dd>
    <dt>
    <a name = "stop_app"></a>
    <strong>stop_app ()</strong>
    </dt>
    <dd>
    inherited from Application





    <h3>See also:</h3>
    <ul>
         <a href="../modules/Duplex.Application.html#stop_app">Duplex.Application.stop_app</a>
    </ul>


</dd>
    <dt>
    <a name = "_clear_routing"></a>
    <strong>_clear_routing ()</strong>
    </dt>
    <dd>
    Reset all properties that deal with the current mapping







</dd>
    <dt>
    <a name = "_remove_notifier"></a>
    <strong>_remove_notifier ()</strong>
    </dt>
    <dd>
    Detach an existing notifier, if it exists







</dd>
    <dt>
    <a name = "_update_control"></a>
    <strong>_update_control (skip_transmit)</strong>
    </dt>
    <dd>
    Bi-directional update (controller/Renoise)


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">skip_transmit</span>
         (bool)
        </li>
    </ul>





</dd>
    <dt>
    <a name = "_scale_value"></a>
    <strong>_scale_value (val, method)</strong>
    </dt>
    <dd>
    Scale value log/exponentially


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">val</span>



        </li>
        <li><span class="parameter">method</span>



        </li>
    </ul>

    <h3>Returns:</h3>
    <ol>

        bool
    </ol>




</dd>
    <dt>
    <a name = "_has_value"></a>
    <strong>_has_value ()</strong>
    </dt>
    <dd>
    Determine if we are able to retrieve value for the current assignment



    <h3>Returns:</h3>
    <ol>

        bool
    </ol>




</dd>
    <dt>
    <a name = "_has_observable"></a>
    <strong>_has_observable ()</strong>
    </dt>
    <dd>
    Determine ability to retrieve an Observable for the current assignment



    <h3>Returns:</h3>
    <ol>

        bool
    </ol>




</dd>
    <dt>
    <a name = "_get_value"></a>
    <strong>_get_value ()</strong>
    </dt>
    <dd>
    Retrieve value for the current assignment



    <h3>Returns:</h3>
    <ol>

        bool, number or nil
    </ol>




</dd>
    <dt>
    <a name = "_get_observable"></a>
    <strong>_get_observable ()</strong>
    </dt>
    <dd>
    Retrieve Observable for the current assignment



    <h3>Returns:</h3>
    <ol>

        bool, number or nil
    </ol>




</dd>
    <dt>
    <a name = "_transmit"></a>
    <strong>_transmit (val)</strong>
    </dt>
    <dd>
    Transmit message
 when routed to MIDI, we generate an emulated 'TriggerMessage'


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">val</span>
         (number, bool or nil)
        </li>
    </ul>





</dd>
    <dt>
    <a name = "_get_min_max"></a>
    <strong>_get_min_max (assist)</strong>
    </dt>
    <dd>
    Get the min/max values for a parameter


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">assist</span>
         (Table) an entry from the assist table
        </li>
    </ul>





</dd>
    <dt>
    <a name = "_retrieve_assist_by_name"></a>
    <strong>_retrieve_assist_by_name (str_name)</strong>
    </dt>
    <dd>
    Locate a specific item in our "assist" table from it's name,
 with built-in wildcard support (entries that contain an asterisk)


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">str_name</span>



        </li>
    </ul>





</dd>
    <dt>
    <a name = "_update_option_panel"></a>
    <strong>_update_option_panel ()</strong>
    </dt>
    <dd>
    Update min/max options, called after routing has been established







</dd>
    <dt>
    <a name = "_reset_min_max_options"></a>
    <strong>_reset_min_max_options ()</strong>
    </dt>
    <dd>
    Disable min/max options







</dd>
    <dt>
    <a name = "_validate_range"></a>
    <strong>_validate_range ()</strong>
    </dt>
    <dd>
    Validate &amp; set the current option/user-specified min/max
 note that we allow inverted min/max, but not values outside this range







</dd>
    <dt>
    <a name = "_establish_routing"></a>
    <strong>_establish_routing (first_run)</strong>
    </dt>
    <dd>
    Look up the mapping and gather as much information as possible


    <h3>Parameters:</h3>
    <ul>
        <li><span class="parameter">first_run</span>
         (bool) true when app is first instantiated
        </li>
    </ul>





</dd>
    <dt>
    <a name = "on_idle"></a>
    <strong>on_idle ()</strong>
    </dt>
    <dd>
    inherited from Application





    <h3>See also:</h3>
    <ul>
         <a href="../modules/Duplex.Application.html#on_idle">Duplex.Application.on_idle</a>
    </ul>


</dd>
    <dt>
    <a name = "_build_options"></a>
    <strong>_build_options ()</strong>
    </dt>
    <dd>
    Override the application method (update the options once ready)







</dd>
    <dt>
    <a name = "_build_app"></a>
    <strong>_build_app ()</strong>
    </dt>
    <dd>
    inherited from Application



    <h3>Returns:</h3>
    <ol>

        bool
    </ol>


    <h3>See also:</h3>
    <ul>
         <a href="../modules/Duplex.Application.html#_build_app">Duplex.Application._build_app</a>
    </ul>


</dd>
</dl>
    <h2><a name="Tables"></a>Tables</h2>
    <dl class="function">
    <dt>
    <a name = "self._controls"></a>
    <strong>self._controls</strong>
    </dt>
    <dd>
    List of UIComponents







</dd>
    <dt>
    <a name = "self._assist"></a>
    <strong>self._assist</strong>
    </dt>
    <dd>
    (table), contains extra information about mapping
 (see MidiActions.assist_table)







</dd>
</dl>
    <h2><a name="Fields"></a>Fields</h2>
    <dl class="function">
    <dt>
    <a name = "self._active_map_index"></a>
    <strong>self._active_map_index</strong>
    </dt>
    <dd>
    (int), between 1 - #<em>midi</em>mappings, or nil if no action







</dd>
    <dt>
    <a name = "self._is_switch"></a>
    <strong>self._is_switch</strong>
    </dt>
    <dd>
    (bool), interpreted from the MIDI action







</dd>
    <dt>
    <a name = "self._is_trigger"></a>
    <strong>self._is_trigger</strong>
    </dt>
    <dd>
    (bool), interpreted from the MIDI action







</dd>
    <dt>
    <a name = "self._is_toggle"></a>
    <strong>self._is_toggle</strong>
    </dt>
    <dd>
    (bool), control the visual state of a button







</dd>
    <dt>
    <a name = "self._value"></a>
    <strong>self._value</strong>
    </dt>
    <dd>
    (number/bool/nil), represents the current value
 (literal value, "64" for 64 BPM, "1.2" for 1.2 db, etc.)







</dd>
    <dt>
    <a name = "self._skip_notifier"></a>
    <strong>self._skip_notifier</strong>
    </dt>
    <dd>
    (bool), set when updating a parameter which is being observed







</dd>
    <dt>
    <a name = "self._revert_requested"></a>
    <strong>self._revert_requested</strong>
    </dt>
    <dd>
    (bool), set when options should be reset







</dd>
    <dt>
    <a name = "self._user_min"></a>
    <strong>self._user_min</strong>
    </dt>
    <dd>
    (number), last "good" user-specified value







</dd>
</dl>


</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.2</a></i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
